package routers

import (
	apiTypes "law-api-master/types"
)

type Chain interface {
	//GenerateAccount generate a valid account to be active in blcokchain
	GenerateAccount() (string, string, string, error)

	//CheckPrivateKey check whether the private key is valid
	CheckPrivateKey(string) bool

	//Upload upload proof data in proof contract
	Upload(string, *apiTypes.ProofData, int) (*apiTypes.ChainStatus, error)

	//GetChainStatus find where a transaction placed in blockchain
	GetChainStatus(string) (*apiTypes.ChainStatus, error)

	//GetProofData find what we had storaged in contract ever by sending this transaction
	GetProofData(string, int, string, uint64) (*apiTypes.ProofData, error)

	//ClearUserNonce clear user nonce cached in law-api
	ClearUserNonce(string)

	//Charge transfer money to a account
	Charge(string, float64, int) error

	//Clear charge cache
	ClearChargeNonce()
}
